/*
 * ModeloMenos1.h
 *
 *  Created on: 24/06/2012
 *      Author: natuchis
 */

#ifndef MODELOMENOS1_H_
#define MODELOMENOS1_H_

#include "Modelo.h"

class ModeloMenos1 : public Modelo {

public:

	ModeloMenos1();
	virtual ~ModeloMenos1();
	virtual void actualizarModeloYExcluidos(string contexto, char carac, set<char> *excluidos);
	virtual void comprimir(string contexto, char carac, set<char> *excluidos, Datos &datos, bool estoyEnElEof);

	unsigned long int getFrecuenciaTotal(string contexto);

	unsigned long int getCantExcluidosPresentesEnModelo(string contexto, set<char> *excluidos);

	bool existeCaracterEnEsteContexto(string contexto, char carac);

	void agregarContexto(string Contexto);
	void agregarCaracter(char carac);

	void actualizar(string contexto, char carac);

	/* Para Descompresion */

	void getMapa(string contexto, map<string,Caracter> &mapa, set<char> *excluidos);
	unsigned long int getFrecuenciaTotalExcluidos(string contexto, set<char> *excluidos);
	void setExcluidos(string contexto, set<char> *excluidos);
	unsigned long int getFrecuenciaEsc(string contexto);


private:

	unsigned short int frecTotal;

	void agregarCaracteresNoExcluidos(map<string, Caracter> &mapa, set<char> *excluidos);

};

#endif /* MODELOMENOS1_H_ */
